
package modelo.bo.cmd.contato;

import java.io.*;
import java.sql.*;
import javax.servlet.http.*;
import modelo.bo.cmd.Acao;
import modelo.dao.impl.*;
import modelo.dao.util.*;
import modelo.dto.*;

public class AtualizarContato extends Acao {
	private Contato contato;
	private Operadora operadora;
	//private Telefone telefone;
	
	public AtualizarContato() {
		this.contato = new Contato();
		this.operadora = new Operadora();
		//this.telefone = new Telefone();
	}
	
	@Override
	public void init(HttpServletRequest request) {
		super.pagina = "/pages/contato/atualizar-contato.jsp";
		
		this.contato.setCodigo(Integer.parseInt(request.getParameter("id_contato")));
		this.contato.setNome(request.getParameter("nome"));
		this.contato.setSobreNome(request.getParameter("sobreNome"));
		this.contato.setSexo(request.getParameter("sexo"));
		this.contato.adicionarEmail(request.getParameter("email"));
		this.contato.setComentario(request.getParameter("comentario"));
		this.contato.getGrupo().setCodigo(Integer.parseInt(request.getParameter("grupo")));
			
		this.operadora.setCodigo(Integer.parseInt(request.getParameter("operadora")));
		
		Telefone celular = new Telefone();		
		celular.setCodigo(Integer.parseInt(request.getParameter("id_celular")));
		celular.setNumero(request.getParameter("celular"));		
		celular.setOperadora(this.operadora);
		
		Telefone residencial = new Telefone();
		residencial.setCodigo(Integer.parseInt(request.getParameter("id_residencial")));
		residencial.setNumero(request.getParameter("residencial"));
		
		Telefone comercial = new Telefone();
		comercial.setCodigo(Integer.parseInt(request.getParameter("id_comercial")));
		comercial.setNumero(request.getParameter("comercial"));		
						
		this.contato.adicionarTelefone(celular);
		this.contato.adicionarTelefone(residencial);
		this.contato.adicionarTelefone(comercial);
	}

	@Override
	public boolean executar(HttpServletRequest request, HttpServletResponse response) throws IOException {
		super.msg = String.format("Contato \" %s \" atualizado.", this.contato.getNome());		
		
		try {
			
			Connection conn = ConexaoMySQL.getConnection();
			
			ContatoImpl ic = new ContatoImpl(conn);
			TelefoneImpl ti = new TelefoneImpl(conn);
						
			if(ic.atualizar(this.contato)) {
				request.setAttribute("msg", msg);
							
				for(Telefone tel : this.contato.getTelefones()) {
					tel.getContato().setCodigo(contato.getCodigo());
					
					System.out.println(tel.getCodigo());
					System.out.println(tel.getNumero());
					System.out.println(tel.getOperadora().getCodigo());
					System.out.println(tel.getContato().getCodigo());
					
					ti.atualizar(tel);
				}
			}
		}
		catch (SQLException e) {
			e.printStackTrace();
			super.msg = "Erro ao tentar atualizar contato. <br />";
			request.setAttribute("msg", super.msg + e.getMessage());
		}
		
		return super.efetuou;
	}

	@Override
	public String retornaPagina() {
		return super.pagina;
	}

}
